

package com.hazelcast.nio;

import com.hazelcast.version.Version;

/**
 * An instance which is used in WAN and supports versioning. The version
 * indicates the version of the WAN protocol.
 */
public interface WanProtocolVersionAware {

    /**
     * Returns the WAN protocol version. This method is similar to
     * {@link VersionAware#getVersion()} but is used in WAN replication, not in
     * message exchange inside a single cluster.
     *
     * @return the WAN protocol version or {@link Version#UNKNOWN} if not set
     * @see VersionAware#getVersion()
     */
    Version getWanProtocolVersion();

    /**
     * Sets the WAN protocol version. This method is similar to
     * {@link VersionAware#setVersion(Version)} but is used in WAN replication,
     * not in message exchange inside a single cluster.
     *
     * @param version the WAN protocol version
     * @see VersionAware#setVersion(Version)
     */
    void setWanProtocolVersion(Version version);
}
